package net.siufung.web.aop.service;

import java.util.concurrent.TimeUnit;

/**
 * @author 陈建峰
 * @date 2022/10/8 6:09 下午
 * @since V1.0.0
 */
public interface IAutoIdempotentService {

    /**
     * 获得缓存中的幂等Key
     * @param autoIdempotentKey 幂等Key
     * @return Object
     */
    Object getCache(String autoIdempotentKey);

    /**
     * 设置缓存
     * @param idempotentKey key
     * @param idempotentValue 值
     * @param timeout 超时时间
     * @param timeUnit 超时时间单位
     */
    void putCache(String idempotentKey, String idempotentValue, long timeout, TimeUnit timeUnit);

    /**
     * 设置缓存
     * @param idempotentKey key
     * @param idempotentValue 值
     * @param timeout 超时时间(秒)
     */
    default void putCache(String idempotentKey, String idempotentValue, long timeout){
        this.putCache(idempotentKey, idempotentValue, timeout, TimeUnit.SECONDS);
    };


}
